/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucsur.tp.sistemainventario.dao;

import java.sql.*;
import edu.ucsur.tp.sistemainventario.beans.Usuario;
import edu.ucsur.tp.sistemainventario.utils.Conexion;
import java.util.*;
/**
 *
 * @author luis.hidalgo
 */
public class MySqlUsuarioDAO implements UsuarioDAO{
    
  public void insertar(Usuario usuario) {
    String sql = "INSERT INTO usuario ( nombre, apellidos, cargo, usuario, clave ) ";
    sql += " VALUES ( ?, ?, ?, ?, ? ) ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, usuario.getNombre());
      pstmt.setString(2, usuario.getApellidos());
      pstmt.setString(3, usuario.getCargo());
      pstmt.setString(4, usuario.getUsuario());
      pstmt.setString(5, usuario.getClave());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void actualizarUsuario (Usuario usuario){
      String sql = "UPDATE usuario SET nombre = ?, apellidos = ?, cargo = ?, usuario = ?, clave = ? WHERE usuario = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, usuario.getNombre());
      pstmt.setString(2, usuario.getApellidos());
      pstmt.setString(3, usuario.getCargo());
      pstmt.setString(4, usuario.getUsuario());
      pstmt.setString(5, usuario.getClave());
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public void eliminarUsuario(String usuario) {
    String sql = "DELETE FROM usuario WHERE codigo = ? ";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, usuario);
      pstmt.executeUpdate();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
  }
  
  public List<Usuario> getListaUsuarioPorNombre(String Nombre) {
    List<Usuario> listaUsuario = new ArrayList<Usuario>();
    String sql = "SELECT * FROM usuario WHERE nombre like ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1, "%" + Nombre + "%");
      ResultSet rs = pstmt.executeQuery();
      while (rs.next()) {
        Usuario usuario = new Usuario();
        usuario.setNombre(rs.getString("nombre"));
        usuario.setApellidos(rs.getString("apellidos"));
        usuario.setCargo(rs.getString("cargo"));
        usuario.setUsuario(rs.getString("usuario"));
        usuario.setClave(rs.getString("clave"));
        listaUsuario.add(usuario);
      }
      rs.close();
      pstmt.close();
      conn.close();
      return listaUsuario;
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
  
  public Usuario getUsuario(String usuario_nom) {//escoge por nombre de usuario
    String sql = "SELECT * FROM usuario WHERE usuario = ?";
    try {
      Connection conn = Conexion.getConnection();
      PreparedStatement pstmt = conn.prepareStatement(sql);
      pstmt.setString(1,usuario_nom);
      ResultSet rs = pstmt.executeQuery();
      
      if (rs.next()) {
        Usuario usuario = new Usuario();
        usuario.setNombre(rs.getString("nombre"));
        usuario.setApellidos(rs.getString("apellidos"));
        usuario.setCargo(rs.getString("cargo"));
        usuario.setUsuario(rs.getString("usuario"));
        usuario.setClave(rs.getString("clave"));
        return usuario;
      }
      rs.close();
      pstmt.close();
      conn.close();
    } catch (Exception ex) {
      ex.printStackTrace();
    }
    return null;
  }
    
}
